#define key2         D4   //中间的按键，也是烧录按键
#define key3         D1   //右边的按键，进入默写模式的按键
#include <U8g2_for_Adafruit_GFX.h>
#include <GxEPD2_BW.h>
#include "gb2312.c"
#include "img.c"
#include "LittleFS.h"
#include <EEPROM.h>
// #define RST_PIN D3 // D3(0)

#define GxEPD2_DISPLAY_CLASS GxEPD2_BW
#define GxEPD2_DRIVER_CLASS GxEPD2_260                       // GDEW029Z10  128x296, UC8151 (IL0373), (WFT0290CZ10)
#define MAX_DISPLAY_BUFFER_SIZE (81920ul - 34000ul - 5000ul)  // 当前的基础使用量约为34000，你需要根据你的应用程序实际情况，将这个数字调整为5000。
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))


GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=D8*/ D8, /*DC=D3*/ D3, /*RST=D4*/ D0, /*BUSY=D1*/ D2));  //固定的引脚 SCK=D5  DATA=D7

//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM029T94
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=*/ 16, /*DC=D3*/ 0, /*RST=*/ -1, /*BUSY=*/ 4));
U8G2_FOR_ADAFRUIT_GFX u8g2Fonts;
#include "displaycode.h"
//#include "getData.h"
extern const uint8_t chinese_city_gb2312[239032] U8G2_FONT_SECTION("chinese_city_gb2312");
/*
   8266接线方式：
   busy--D2 4
   res--D4 2
   dc--D3 0
   cs--D8 15
   clk--D5 14
   din--D7 13
   gnd--g
   vcc--3v3
*/
int x = 10, y = 55;
bool read_state = false; //标记阅读/默写模式
void setup()
{
  // put your setup code here, to run once:
  Serial.begin(115200);
  pinMode(key2, INPUT_PULLUP); //INPUT_PULLUP
  pinMode(key3, INPUT_PULLUP); //INPUT_PULLUP
//   Serial.println("setup");
//   digitalWrite(RST_PIN, HIGH);
//   pinMode(RST_PIN, OUTPUT);
//   delay(20);
//   digitalWrite(RST_PIN, LOW);
//   delay(20);
//   digitalWrite(RST_PIN, HIGH);
  delay(200);
  display.init();
  EEPROM.begin(64);
  /*
     第一次运行需要取消下面4行已防止EEPROM中的原有数据影响词条位置
     传完之后注释掉下面4行，再次上传就可以正常运行了。
  */
   /*已修复无需二次上传*/
  int f1 = EEPROM.read(0);
  int f2 = EEPROM.read(4);
  if (f1 == f2 && f1 == 255) {
    EEPROM.write(0, 0);
    EEPROM.commit();
    EEPROM.write(4, 0);
    EEPROM.commit();
  }
    //  EEPROM.write(0,0);
    //  EEPROM.commit();
    //  EEPROM.write(4,0);
    //  EEPROM.commit();
  u8g2Fonts.begin(display);//将u8g2连接到display
  display.setRotation(3);
  display.firstPage();
  display.fillScreen(GxEPD_WHITE);
  display.drawBitmap(0, 0, gImage_a, 296, 128, GxEPD_BLACK);
  display.nextPage();
  u8g2Fonts.setForegroundColor(GxEPD_BLACK);  // 设置前景色
  u8g2Fonts.setBackgroundColor(GxEPD_WHITE);

  if(!LittleFS.begin()){
    Serial.println("An Error has occurred while mounting LittleFS");
    return;
  }
  
  File file = LittleFS.open("/words.txt", "r");
  if(!file){
    Serial.println("文件获取失败，请先上传文件！");
    Serial.println("Failed to open file for reading");
    return;
  }
  
  Serial.println("File Content:");
  while(file.available()){
    Serial.write(file.read());
  }
  file.close();

//   if (!LittleFS.begin()) // mount the file system
//   {
//     Serial.println("文件获取失败，请先上传文件！");
//     u8g2Fonts.setCursor(0, 120);
//     u8g2Fonts.print("文件获取失败，请先上传文件！");
//     return;
//   }
  display.fillScreen(GxEPD_WHITE);
  u8g2Fonts.setFont(chinese_city_gb2312);
//   u8g2Fonts.setCursor(0, 120);
  Serial.println("文件获取成功!");
//   u8g2Fonts.print("文件获取成功!");
//   display.nextPage();
  button();
}

void loop()
{
}
